package com.example.entity;

import lombok.Data;

import javax.persistence.*;

/**
 * 用户账户信息实体类（继承基础账户信息）
 * <p>
 * 对应数据库表：user_info
 * </p>
 * <p>
 * 核心功能：
 * 1. 存储用户详细信息及账户凭证
 * 2. 扩展基础账户信息（继承自Account类）
 * 3. 支持用户认证与权限管理
 * </p>
 * <p>
 * 设计说明：
 * 1. 包含用户基础属性与扩展属性分离设计
 * 2. 主键采用自增策略（GenerationType.IDENTITY）
 * </p>
 */
@Data
@Table(name = "user_info")
public class UserInfo extends Account {

	/**
	 * 主键ID（自增）
	 * 对应数据库列：id
	 * 数据库约束：PRIMARY KEY AUTO_INCREMENT
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;

	/**
	 * 登录用户名（唯一）
	 * 对应数据库列：name
	 * 示例值："zhangsan"
	 * 数据库约束：UNIQUE NOT NULL
	 */
	@Column(name = "name")
	private String name;

	/**
	 * 加密密码（存储加密值）
	 * 对应数据库列：password
	 */
	@Column(name = "password")
	private String password;

	/**
	 * 用户昵称
	 * 对应数据库列：nickName
	 */
	@Column(name = "nickName")
	private String nickName;

	/**
	 * 性别标识
	 * 对应数据库列：sex
	 */
	@Column(name = "sex")
	private String sex;

	/**
	 * 年龄（可选）
	 * 对应数据库列：age
	 * 数值范围：0-150
	 */
	@Column(name = "age")
	private Integer age;

	/**
	 * 联系电话
	 * 对应数据库列：phone
	 * 格式示例："13800138000"
	 * 验证规则：
	 * - 需实现正则校验
	 */
	@Column(name = "phone")
	private String phone;

	/**
	 * 电子邮箱
	 * 对应数据库列：email
	 * 格式示例："zhangsan@example.com"
	 * 验证规则：
	 * - 需实现正则校验
	 */
	@Column(name = "email")
	private String email;

	/**
	 * 用户等级（权限级别）
	 * 对应数据库列：level
	 */
	@Column(name = "level")
	private Integer level;


//	public String getName() {
//		return name;
//	}
//	public void setName(String name) {
//		this.name = name;
//	}
//	public String getPassword() {
//		return password;
//	}
//	public void setPassword(String password) {
//		this.password = password;
//	}
//	public String getNickName() {
//		return nickName;
//	}
//	public void setNickName(String nickName) {
//		this.nickName = nickName;
//	}
//	public String getSex() {
//		return sex;
//	}
//	public void setSex(String sex) {
//		this.sex = sex;
//	}
//	public Integer getAge() {
//		return age;
//	}
//	public void setAge(Integer age) {
//		this.age = age;
//	}
//	public String getPhone() {
//		return phone;
//	}
//	public void setPhone(String phone) {
//		this.phone = phone;
//	}
//	public String getEmail() {
//		return email;
//	}
//	public void setEmail(String email) {
//		this.email = email;
//	}
//	public Integer getLevel() {
//		return level;
//	}
//	public void setLevel(Integer level) {
//		this.level = level;
//	}
//
//
//    public void setId(Long id) {
//        this.id = id;
//    }
//    public Long getId() {
//        return this.id;
//    }

}
